import Vue from 'vue';
import iView from 'iview';
import Util from '../tool/util';
import VueRouter from 'vue-router';
import Cookies from 'js-cookie';
import { appRouter, otherRouter, routers } from './router';

Vue.use(VueRouter);
// 路由配置
const RouterConfig = {
    // mode: 'history',
    routes: routers
};

export const router = new VueRouter(RouterConfig);

router.beforeEach((to, from, next) => {

    iView.LoadingBar.start();
    Util.title(to.meta.title);
	if (Cookies.get('locking') === '1' && to.name !== 'locking') {
        // 判断当前是否是锁定状态
        next({
            replace: true,
            name: 'locking'
        });
    } else if (Cookies.get('locking') === '0' && to.name === 'locking') {
        next(false);
    } else {
        if (!Cookies.get('flc_sid') && to.name !== 'login') {
            //没有登录但是却不再登录页应当跳转到登录页
            // 判断是否已经登录且前往的页面不是登录页
            next({
                name: 'login'
            });
		}else if (Cookies.get ('flc_sid') && to.name === 'login') {
            // 判断是否已经登录且前往的是登录页
            //如果已经登录却依然停留在登录页就清除登录状态让用户重新登录
			Cookies.remove ('flc_sid');
            Util.title();
			next();
		} else {
            const curRouterObj = Util.getRouterObjByName(
                [otherRouter, ...appRouter],
                to.name
            );
            if (curRouterObj && curRouterObj.access !== undefined) {
                // 需要判断权限的路由
                if (curRouterObj.access === parseInt(Cookies.get('access'))) {
                    Util.toDefaultPage(
                        [otherRouter, ...appRouter],
                        to.name,
                        router,
                        next
                    );// 如果在地址栏输入的是一级菜单则默认打开其第一个二级菜单的页面
                } else {
                    next({
                        replace: true,
                        name: 'error-403'
                    });
                }
            } else {
                // 没有配置权限的路由, 直接通过
                Util.toDefaultPage([...routers], to.name, router, next);
            }
        }
    }
});

router.afterEach(to => {
    // Util.openNewPage(router.app, to.name, to.params, to.query);
    iView.LoadingBar.finish();
    window.scrollTo(0, 0);
});
